البرمجة

إنشاء تطبيق جانغو وقاعدة بيانات

جدول المحتوى

إنشاء تطبيق جانغو وتوصيله بقاعدة بيانات: دليل شامل ومفصل

تعد منصة جانغو (Django) من أشهر أُطُر تطوير الويب في عالم البرمجة اليوم، لما تقدمه من مزايا تسهل عملية بناء تطبيقات ويب قوية، قابلة للتوسع، وآمنة. تعتمد جانغو بشكل كبير على لغة بايثون التي تتميز ببساطتها وسهولة تعلمها، مما يجعلها الخيار الأول للكثير من المطورين سواء كانوا مبتدئين أو محترفين. من بين أهم المهام التي يواجهها المطور عند بناء تطبيق باستخدام جانغو هي ربط التطبيق بقاعدة بيانات، حيث أن البيانات هي جوهر أي تطبيق حديث.

في هذا المقال سنتناول بالتفصيل خطوات إنشاء تطبيق جانغو من الصفر، شرح كيفية إعداد البيئة البرمجية، إنشاء المشروع، تطوير تطبيق داخله، وربطه بقاعدة بيانات قوية، مع توضيح كيفية التعامل مع قواعد البيانات المختلفة مثل SQLite، PostgreSQL، MySQL، وغيرها. كما سنتطرق إلى كيفية إدارة النماذج (Models)، التعامل مع عمليات الهجرة (Migrations)، وكيفية إجراء استعلامات معقدة من خلال ORM الخاص بجانغو.


1. مقدمة حول جانغو وأهمية قواعد البيانات

جانغو هو إطار عمل ويب مفتوح المصدر يعتمد على لغة بايثون، تم تصميمه لتسهيل بناء تطبيقات ويب متطورة بسرعة وكفاءة عالية. واحدة من المميزات الرئيسية لجانغو هي إمكانية ربطه بسهولة مع قواعد البيانات المتنوعة وإدارة البيانات من خلال نظام ORM (Object-Relational Mapping) الذي يسمح بالتعامل مع قواعد البيانات عبر كائنات برمجية دون الحاجة لكتابة استعلامات SQL بشكل مباشر.

تخزين البيانات واسترجاعها بشكل منظم وفعال هو عنصر أساسي في كل تطبيق ويب. لذلك ربط جانغو بقاعدة بيانات قوية وموثوقة هو خطوة أساسية، سواء كانت قاعدة بيانات بسيطة مثل SQLite المستخدمة بشكل افتراضي أثناء التطوير، أو قواعد بيانات متقدمة مثل PostgreSQL أو MySQL التي تستخدم في بيئات الإنتاج.


2. إعداد البيئة البرمجية لإنشاء تطبيق جانغو

قبل البدء في بناء التطبيق، يجب تجهيز البيئة البرمجية اللازمة، وتتضمن هذه الخطوات:

أ. تثبيت لغة بايثون

جانغو مبني على بايثون، لذا يجب التأكد من تثبيت نسخة حديثة من بايثون (يفضل الإصدار 3.8 فأحدث). يمكن تنزيل بايثون من الموقع الرسمي python.org.

ب. إنشاء بيئة افتراضية (Virtual Environment)

للحفاظ على تنظيم المكتبات والاعتماديات، من الأفضل إنشاء بيئة افتراضية خاصة بالمشروع:

bash
python -m venv env source env/bin/activate # على لينكس أو ماك env\Scripts\activate # على ويندوز

ج. تثبيت جانغو

بعد تفعيل البيئة الافتراضية، يتم تثبيت جانغو عبر pip:

bash
pip install django

3. إنشاء مشروع جانغو جديد

يمكن الآن إنشاء مشروع جانغو جديد باستخدام الأمر:

bash
django-admin startproject myproject

هذا الأمر سينشئ مجلدًا جديدًا باسم myproject يحتوي على الملفات الأساسية للمشروع، مثل:

  • manage.py: أداة لإدارة المشروع.

  • مجلد myproject الذي يحتوي على ملفات الإعدادات (settings.py) وملف التوجيه الرئيسي (urls.py).


4. إنشاء تطبيق داخل المشروع

جانغو يعتمد على فكرة التطبيقات الصغيرة ضمن المشروع الكبير. لإنشاء تطبيق داخل المشروع:

bash
cd myproject python manage.py startapp myapp

يتم إنشاء مجلد جديد باسم myapp يحتوي على هيكل التطبيق، مثل ملفات النماذج (models.py)، العروض (views.py)، والملفات الخاصة بالاختبارات.


5. إعداد قاعدة البيانات في جانغو

أ. قاعدة البيانات الافتراضية SQLite

جانغو يأتي بإعداد SQLite مدمج بشكل افتراضي، وهي قاعدة بيانات خفيفة تناسب مشاريع التطوير والاختبار.

يمكن العثور على إعدادات SQLite في ملف settings.py داخل مجلد المشروع:

python
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } }

في هذه الحالة، سيتم إنشاء ملف db.sqlite3 داخل مجلد المشروع كقاعدة البيانات.

ب. استخدام قواعد بيانات أخرى

لبيئات الإنتاج، يفضل استخدام قواعد بيانات أكثر قوة ومرونة مثل PostgreSQL أو MySQL. هنا مثال لإعداد PostgreSQL في ملف settings.py:

python
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'myuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '5432', } }

للاستخدام الصحيح، يجب تثبيت مكتبة psycopg2 عبر الأمر:

bash
pip install psycopg2-binary

وبالمثل، لاستخدام MySQL يتم ضبط الإعدادات على النحو التالي:

python
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'myuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } }

ويجب تثبيت مكتبة mysqlclient أو بدائلها حسب النظام:

bash
pip install mysqlclient

6. إنشاء النماذج (Models) لتمثيل البيانات

يتم تعريف نماذج البيانات في ملف models.py داخل التطبيق myapp. كل نموذج يمثل جدولًا في قاعدة البيانات، وكل خاصية داخل النموذج تمثل عمودًا في هذا الجدول.

مثال على نموذج بسيط لتمثيل مستخدم:

python
from django.db import models class User(models.Model): username = models.CharField(max_length=150, unique=True) email = models.EmailField(unique=True) date_joined = models.DateTimeField(auto_now_add=True) def __str__(self): return self.username

في هذا المثال، لدينا جدول باسم User يحتوي على أعمدة username، email، وdate_joined.


7. إنشاء وترحيل (Migrate) قاعدة البيانات

بعد إنشاء أو تعديل النماذج، يجب إنشاء ترحيلات (migrations) لتنفيذ التغييرات على قاعدة البيانات.

يتم ذلك عبر الأمرين التاليين:

bash
python manage.py makemigrations python manage.py migrate
  • makemigrations: يقوم بإنشاء ملفات ترحيل تصف التغييرات التي ستتم على قاعدة البيانات.

  • migrate: يقوم بتطبيق هذه التغييرات فعليًا على قاعدة البيانات.


8. إنشاء واجهة إدارة جانغو لإدارة البيانات

جانغو يوفر لوحة تحكم (Admin) جاهزة لإدارة بيانات التطبيق.

لتفعيلها، يجب تسجيل النموذج في ملف admin.py داخل التطبيق:

python
from django.contrib import admin from .models import User admin.site.register(User)

ثم يمكن تشغيل السيرفر:

bash
python manage.py runserver

والولوج إلى لوحة الإدارة عبر المتصفح على الرابط:

arduino
http://127.0.0.1:8000/admin

يتطلب تسجيل مستخدم مسؤول أولي:

bash
python manage.py createsuperuser

9. إنشاء العروض (Views) لعرض البيانات

العروض هي المسؤولة عن التعامل مع طلبات المستخدمين وإرجاع المحتوى المناسب. يمكن كتابة العروض في ملف views.py داخل التطبيق.

مثال على عرض يعرض قائمة المستخدمين:

python
from django.shortcuts import render from .models import User def user_list(request): users = User.objects.all() return render(request, 'user_list.html', {'users': users})

10. إعداد قوالب (Templates) لعرض المحتوى

جانغو يعتمد على نظام القوالب لعرض صفحات HTML.

يجب إنشاء مجلد templates داخل مجلد التطبيق أو المشروع، ثم إنشاء ملف user_list.html:

html
html> <html> <head> <title>قائمة المستخدمينtitle> head> <body> <h1>المستخدمونh1> <ul> {% for user in users %} <li>{{ user.username }} - {{ user.email }}li> {% endfor %} ul> body> html>

11. توجيه عناوين URL

يجب ربط العروض بعناوين URL لكي يتمكن المستخدم من الوصول إليها.

في ملف urls.py الخاص بالتطبيق أو المشروع:

python
from django.urls import path from .views import user_list urlpatterns = [ path('users/', user_list, name='user_list'), ]

ثم في ملف urls.py الخاص بالمشروع، تضمين عناوين التطبيق:

python
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('myapp.urls')), ]

12. التفاعل مع قاعدة البيانات من خلال ORM

جانغو يقدم ORM قوي يمكن استخدامه للقيام بكافة عمليات قاعدة البيانات مثل الإدخال، التحديث، الحذف والاستعلام.

مثال على إضافة مستخدم جديد:

python
new_user = User(username='ahmed', email='[email protected]') new_user.save()

تحديث مستخدم:

python
user = User.objects.get(username='ahmed') user.email = '[email protected]' user.save()

حذف مستخدم:

python
user = User.objects.get(username='ahmed') user.delete()

استعلامات متقدمة:

  • الحصول على جميع المستخدمين الذين تم الانضمام لهم خلال آخر شهر:

python
from django.utils import timezone from datetime import timedelta one_month_ago = timezone.now() - timedelta(days=30) recent_users = User.objects.filter(date_joined__gte=one_month_ago)

13. التعامل مع إعدادات متقدمة لقاعدة البيانات

في المشاريع الكبيرة، يمكن ضبط إعدادات متقدمة مثل:

  • استخدام إعدادات الاتصال المتعددة لقواعد بيانات مختلفة.

  • تفعيل التخزين المؤقت (Caching) لتحسين الأداء.

  • ضبط قواعد الترحيل لتتناسب مع التغييرات في قاعدة البيانات بدون فقدان البيانات.


14. الجوانب الأمنية عند توصيل جانغو بقاعدة بيانات

يجب الحرص على تأمين بيانات الاتصال بقاعدة البيانات وعدم تضمين كلمات المرور مباشرة في ملف settings.py عند استخدام بيئات الإنتاج. يمكن استخدام متغيرات البيئة (Environment Variables) أو ملفات إعدادات منفصلة غير مضمنة في التحكم بالإصدارات.


15. ملخص جدول مقارنة قواعد البيانات الشائعة مع جانغو

القاعدة المزايا الرئيسية عيوب محتملة التوافق مع جانغو
SQLite مدمجة، سهلة الاستخدام، بدون إعدادات ليست مناسبة للبيئات الإنتاجية الكبيرة مدعومة افتراضيًا
PostgreSQL متقدمة، تدعم الاستعلامات المعقدة، أداء عالي إعداد معقد نسبيًا مدعومة بشكل ممتاز
MySQL شعبية، أداء جيد، دعم واسع مشاكل في بعض الميزات المعقدة مدعومة بشكل جيد
Oracle موثوقة، موجهة للمؤسسات الكبيرة تكلفة عالية، إعداد معقد مدعومة ولكن أقل شيوعًا
MariaDB مفتوحة المصدر، شبيهة بـ MySQL بعض الاختلافات الطفيفة مدعومة

16. الخلاصة

إن إنشاء تطبيق ويب باستخدام جانغو وربطه بقاعدة بيانات يمثل عملية متكاملة تتضمن عدة خطوات هامة تبدأ من تجهيز البيئة، إنشاء المشروع والتطبيق، تحديد النماذج، إعداد قاعدة البيانات، ثم تطوير العروض والتعامل مع البيانات باستخدام ORM. مع توفير جانغو نظامًا متكاملاً لإدارة قواعد البيانات عبر نظام الترحيل والأدوات الإدارية، يمكن للمطور بناء تطبيقات قوية ومتطورة بسهولة مع ضمان الأداء والأمان.

بفضل مرونة جانغو ودعمه لمختلف قواعد البيانات، يمكن للمطورين اختيار قاعدة البيانات المناسبة وفق متطلبات المشروع، مع إمكانية توسيع التطبيق مستقبلاً دون الحاجة لإعادة تصميم الهيكل الأساسي. وهذا ما يجعل جانغو خيارًا مثاليًا لبناء تطبيقات الويب الحديثة التي تعتمد على البيانات بشكل رئيسي.


المصادر والمراجع

  1. الموقع الرسمي لجانغو: https://www.djangoproject.com

  2. الوثائق الرسمية لجانغو حول قواعد البيانات ونظام ORM: https://docs.djangoproject.com/en/stable/topics/db/


هذا المقال يقدم شرحًا تفصيليًا وموسعًا حول كيفية إنشاء تطبيق جانغو وتوصيله بقاعدة بيانات بشكل علمي ومنظم، مع التركيز على التفاصيل الفنية التي تهم مطوري الويب العرب.